Implementing a type debugger for Scala
نویسندگان
چکیده
Statically-typed languages offer type systems that are less and less comprehensible for programmers as the language grows in complexity. In this paper, we present a type debugger, a tool that enables analysis of type-related problems as well as exploration of the typechecking process in general. We explain our findings on implementing a lightweight instrumentation mechanism for SCALA, as well as guide the reader through some typical debugging scenarios in which one can use our tool. The type debugger visualizes the internals of the typechecker which we believe increases its chances of being a successful educational tool, and which simplifies understanding of statically-typed languages in general.
منابع مشابه
Support for Language Independent Browsing of Aggregate Values by Debugger Backends
The debugger backend is a lower-level language subsystem enabling to control and inspect a program’s execution (debuggee), while the frontend is a higher-level API for backend functionality aiming to support debugger user-interfaces. Existing debugger backends allow retrieve aggregate contents, but are language technology dependent, limiting the chances for producing debugger user-interfaces fo...
متن کاملA Debugger for Communicating Scala Objects
This paper presents a software tool for visualising and reasoning about the behaviour of message-passing concurrent programs built with the CSO library for the Scala programming language. It describes the models needed to represent the construction of process networks and the runtime behaviour of the resulting program. We detail the manner in which information is extracted from the use of concu...
متن کاملImplementing a Universe Type System for Scala
The Universe type system is based on the concept of ownership where every object has at most one owner object. It structures the object store using different contexts, which are sets of objects with the same owner, and restricts how references can be passed and used. When enforcing the owneras-modifier property, the Universe type system guarantees that any modification of an object can only be ...
متن کاملMUTS: Native Scala Constructs for Software Transactional Memory
In this paper we argue that the current approaches to implementing transactional memory in Scala, while very clean, adversely affect the programmability, readability and maintainability of transactional code. These problems occur out of a desire to avoid making modifications to the Scala compiler. As an alternative we introduce Manchester University Transactions for Scala (MUTS), which instead ...
متن کاملImplementing a Bidirectional Model Transformation Language as an Internal DSL in Scala
Despite advantages in terms of comprehensibility, verification, and maintainability, bidirectional transformation (bx) languages lack wide-spread adoption. Possible reasons are that tool support for bx languages is sometimes weak or outdated, that many bx languages are hard to integrate with existing software technologies, or that bx languages often cannot be mixed with unidirectional transform...
متن کامل